//
//  XSScrollViewController.m
//  绿地管理系统
//
//  Created by rimi on 16/1/28.
//  Copyright © 2016年 hexs. All rights reserved.
//

#import "XSScrollViewController.h"

@interface XSScrollViewController ()

@end

@implementation XSScrollViewController

/*
 Q:子类不需要写任何一行代码，把子视图加到self.view上只要超过屏幕的高度 ，就能上下滑动到刚好显示完的位置
 1. 最终一定用的ScrollView， 所有子视图要跟着滑，而所有子视图是加到self.view上面的    self.view = scrollView
 
 Q: 如何动态改变scrollView的contentSize
 1.什么时候需要改变？答： 有子视图加到self.view上面的时候需要改变（一旦有任何的子视图的frame超过了当前的contentSize的范围，就要改变contentSize）
 2. 在哪里改 答： option:在controller里面改。 假如在controller里面改：如果有一个方法能够知道controller.view上面子视图的显示发生了变化，就可以在这个方法里面改
 
 */

- (void)viewDidLoad {
    [super viewDidLoad];
    
    
    
}

- (void)viewWillLayoutSubviews
{
    // 3. 如何改： 在任意时刻，contentSize的高度就是所有子视图中maxY最大的那大值，同时满足：有任何的新的子视图加到self.view上面以后；有任何原来的子视图的frame被修改了以后
    __block CGFloat max = 0;
    [self.view.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull view, NSUInteger idx, BOOL * _Nonnull stop) {
        CGFloat maxY = CGRectGetMaxY(view.frame);
        if (maxY > max) {
            max = maxY + 60;
        }
    }];
    
    UIScrollView *scrollView = (UIScrollView *)self.view;
    scrollView.contentSize = CGSizeMake(CGRectGetWidth(self.view.bounds), max);
}

- (void)loadView // loadView 先于 viewDidLoad 执行
{
    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:[UIScreen mainScreen].bounds];
    scrollView.showsVerticalScrollIndicator = NO;
    scrollView.showsHorizontalScrollIndicator = NO;
    self.view = scrollView;
}
@end














